Convertir archivos WAB (Windows Address Book) para leer en Linux

Encontré esta solución de Patrick Boettcher <pboettch@github> llamada «libwab – a tool to read Windows Address Book files from the command line» en https://github.com/pboettch/libwab

Debe tener un ambiente de desaroll GNU C listo. Por lo tanto instale:

 $ sudo apt install build-essential

Es muy fácil de usar. Simplemente descargue libwab-master.zip y extraiga su contenido en un directorio para este proyecto.

$ mkdir ~/Documents/cpp/libawb
$ cd  ~/Documents/cpp/libawb
$ unzip -j libwab-master.zip
Archive: libwab-master.zip
16e5b8a4917f1f273926e93b6aadb17695127ef5
inflating: CMakeLists.txt 
inflating: COPYING 
inflating: ChangeLog 
extracting: INSTALL 
inflating: README 
inflating: THANKS 
inflating: cencode.c 
inflating: cencode.h 
inflating: libwab.c 
inflating: libwab.h 
inflating: pstwabids.c 
inflating: pstwabids.h 
inflating: tools.c 
inflating: tools.h 
inflating: uerr.c 
inflating: uerr.h 
inflating: wabread.c

Si no tiene cmake instalado, entonces lo debe instalar ahora.

$ sudo apt install cmake
[sudo] password for user: 
Reading package lists... Done
Building dependency tree 
...
After this operation, 24.4 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
$

Debe correr cmake para configurar el ambiente de desarrollo al que dispone en su máquina.

Entonces corremos:

~/Documents/cpp/libwab$ cmake .
-- The C compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/Documents/cpp/libwab
~/Documents/cpp/libwab$

Los mensajes pueden variar en su máquina.

Ahora estamos listos para hacer (make) nuestra aplicación:

~/Documents/cpp/libwab$ make
Scanning dependencies of target wabread
[ 14%] Building C object CMakeFiles/wabread.dir/cencode.c.o
[ 28%] Building C object CMakeFiles/wabread.dir/libwab.c.o
[ 42%] Building C object CMakeFiles/wabread.dir/pstwabids.c.o
[ 57%] Building C object CMakeFiles/wabread.dir/tools.c.o
[ 71%] Building C object CMakeFiles/wabread.dir/uerr.c.o
[ 85%] Building C object CMakeFiles/wabread.dir/wabread.c.o
[100%] Linking C executable wabread
[100%] Built target wabread
~/Documents/cpp/libwab$

El programa es creado en nuestro directorio de proyecto. Puede poner el archivo .WAB allí, y ejecutar el programa. Si mi archivo .WAB se llama my_file.wab entonces ejecutamos lo qiguiente:

~/Documents/cpp/libwab$ ./wabread my_file.wab > my_file.ldif

Convertirá el archivo .WAB a un archivo ldif. Este es un formato simple de texto que es fácil de leer y parsear para cualquier propósito.

Hay un modo heurístico (-h) donde el comando wabread intentará leer registros borrados.

Saludos.